home *** CD-ROM | disk | FTP | other *** search
-
-
-
- PERL(1) User Contributed Perl Documentation PERL(1)
-
-
- NNNNAAAAMMMMEEEE
- perl - Practical Extraction and Report Language
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- ppppeeeerrrrllll [ ----aaaaccccddddhhhhnnnnppppPPPPssssSSSSTTTTuuuuUUUUvvvvwwww ] [ ----0000[_o_c_t_a_l] ] [ ----DDDD_n_u_m_b_e_r_/_l_i_s_t] ]
- [ ----FFFF_s_t_r_i_n_g ] [ ----iiii[_e_x_t_e_n_s_i_o_n] ] [ ----IIII_d_i_r ] [ ----llll_o_c_t_a_l ] [
- ----xxxx_d_i_r ] [ _p_r_o_g_r_a_m_f_i_l_e | ----eeee _c_o_m_m_a_n_d ] [ _a_r_g_u_m_e_n_t ... ]
-
- For ease of access, the Perl manual has been split up into
- a number of sections:
-
- ppppeeeerrrrllll PPPPeeeerrrrllll oooovvvveeeerrrrvvvviiiieeeewwww ((((tttthhhhiiiissss sssseeeeccccttttiiiioooonnnn))))
- ppppeeeerrrrllllttttoooocccc PPPPeeeerrrrllll ddddooooccccuuuummmmeeeennnnttttaaaattttiiiioooonnnn ttttaaaabbbblllleeee ooooffff ccccoooonnnntttteeeennnnttttssss
- ppppeeeerrrrllllddddaaaattttaaaa PPPPeeeerrrrllll ddddaaaattttaaaa ssssttttrrrruuuuccccttttuuuurrrreeeessss
- ppppeeeerrrrllllssssyyyynnnn PPPPeeeerrrrllll ssssyyyynnnnttttaaaaxxxx
- ppppeeeerrrrlllloooopppp PPPPeeeerrrrllll ooooppppeeeerrrraaaattttoooorrrrssss aaaannnndddd pppprrrreeeecccceeeeddddeeeennnncccceeee
- ppppeeeerrrrllllrrrreeee PPPPeeeerrrrllll rrrreeeegggguuuullllaaaarrrr eeeexxxxpppprrrreeeessssssssiiiioooonnnnssss
- ppppeeeerrrrllllrrrruuuunnnn PPPPeeeerrrrllll eeeexxxxeeeeccccuuuuttttiiiioooonnnn aaaannnndddd ooooppppttttiiiioooonnnnssss
- ppppeeeerrrrllllffffuuuunnnncccc PPPPeeeerrrrllll bbbbuuuuiiiillllttttiiiinnnn ffffuuuunnnnccccttttiiiioooonnnnssss
- ppppeeeerrrrllllvvvvaaaarrrr PPPPeeeerrrrllll pppprrrreeeeddddeeeeffffiiiinnnneeeedddd vvvvaaaarrrriiiiaaaabbbblllleeeessss
- ppppeeeerrrrllllssssuuuubbbb PPPPeeeerrrrllll ssssuuuubbbbrrrroooouuuuttttiiiinnnneeeessss
- ppppeeeerrrrllllmmmmoooodddd PPPPeeeerrrrllll mmmmoooodddduuuulllleeeessss
- ppppeeeerrrrllllrrrreeeeffff PPPPeeeerrrrllll rrrreeeeffffeeeerrrreeeennnncccceeeessss
- ppppeeeerrrrllllddddsssscccc PPPPeeeerrrrllll ddddaaaattttaaaa ssssttttrrrruuuuccccttttuuuurrrreeeessss iiiinnnnttttrrrroooo
- ppppeeeerrrrlllllllloooollll PPPPeeeerrrrllll ddddaaaattttaaaa ssssttttrrrruuuuccccttttuuuurrrreeeessss:::: lllliiiissssttttssss ooooffff lllliiiissssttttssss
- ppppeeeerrrrlllloooobbbbjjjj PPPPeeeerrrrllll oooobbbbjjjjeeeeccccttttssss
- ppppeeeerrrrllllttttiiiieeee PPPPeeeerrrrllll oooobbbbjjjjeeeeccccttttssss hhhhiiiiddddddddeeeennnn bbbbeeeehhhhiiiinnnndddd ssssiiiimmmmpppplllleeee vvvvaaaarrrriiiiaaaabbbblllleeeessss
- ppppeeeerrrrllllbbbbooootttt PPPPeeeerrrrllll OOOOOOOO ttttrrrriiiicccckkkkssss aaaannnndddd eeeexxxxaaaammmmpppplllleeeessss
- ppppeeeerrrrllllddddeeeebbbbuuuugggg PPPPeeeerrrrllll ddddeeeebbbbuuuuggggggggiiiinnnngggg
- ppppeeeerrrrllllddddiiiiaaaagggg PPPPeeeerrrrllll ddddiiiiaaaaggggnnnnoooossssttttiiiicccc mmmmeeeessssssssaaaaggggeeeessss
- ppppeeeerrrrllllffffoooorrrrmmmm PPPPeeeerrrrllll ffffoooorrrrmmmmaaaattttssss
- ppppeeeerrrrlllliiiippppcccc PPPPeeeerrrrllll iiiinnnntttteeeerrrrpppprrrroooocccceeeessssssss ccccoooommmmmmmmuuuunnnniiiiccccaaaattttiiiioooonnnn
- ppppeeeerrrrllllsssseeeecccc PPPPeeeerrrrllll sssseeeeccccuuuurrrriiiittttyyyy
- ppppeeeerrrrllllttttrrrraaaapppp PPPPeeeerrrrllll ttttrrrraaaappppssss ffffoooorrrr tttthhhheeee uuuunnnnwwwwaaaarrrryyyy
- ppppeeeerrrrllllssssttttyyyylllleeee PPPPeeeerrrrllll ssssttttyyyylllleeee gggguuuuiiiiddddeeee
- ppppeeeerrrrllllxxxxssss PPPPeeeerrrrllll XXXXSSSS aaaapppppppplllliiiiccccaaaattttiiiioooonnnn pppprrrrooooggggrrrraaaammmmmmmmiiiinnnngggg iiiinnnntttteeeerrrrffffaaaacccceeee
- ppppeeeerrrrllllxxxxssssttttuuuutttt PPPPeeeerrrrllll XXXXSSSS ttttuuuuttttoooorrrriiiiaaaallll
- ppppeeeerrrrllllgggguuuuttttssss PPPPeeeerrrrllll iiiinnnntttteeeerrrrnnnnaaaallll ffffuuuunnnnccccttttiiiioooonnnnssss ffffoooorrrr tttthhhhoooosssseeee ddddooooiiiinnnngggg eeeexxxxtttteeeennnnssssiiiioooonnnnssss
- ppppeeeerrrrllllccccaaaallllllll PPPPeeeerrrrllll ccccaaaalllllllliiiinnnngggg ccccoooonnnnvvvveeeennnnttttiiiioooonnnnssss ffffrrrroooommmm CCCC
- ppppeeeerrrrlllleeeemmmmbbbbeeeedddd PPPPeeeerrrrllll hhhhoooowwww ttttoooo eeeemmmmbbbbeeeedddd ppppeeeerrrrllll iiiinnnn yyyyoooouuuurrrr CCCC oooorrrr CCCC++++++++ aaaapppppppp
- ppppeeeerrrrllllppppoooodddd PPPPeeeerrrrllll ppppllllaaaaiiiinnnn oooolllldddd ddddooooccccuuuummmmeeeennnnttttaaaattttiiiioooonnnn
- ppppeeeerrrrllllbbbbooooooookkkk PPPPeeeerrrrllll bbbbooooooookkkk iiiinnnnffffoooorrrrmmmmaaaattttiiiioooonnnn
-
- (If you're intending to read these straight through for
- the first time, the suggested order will tend to reduce
- the number of forward references.)
-
- Additional documentation for Perl modules is available in
- the _/_u_s_r_/_l_o_c_a_l_/_m_a_n_/ directory. Some of this is
- distributed standard with Perl, but you'll also find
- third-party modules there. You should be able to view
- this with your _m_a_n(1) program by including the proper
- directories in the appropriate start-up files. To find
- out where these are, type:
-
-
-
- 30/Jan/96 perl 5.002 with 1
-
-
-
-
-
- PERL(1) User Contributed Perl Documentation PERL(1)
-
-
- ppppeeeerrrrllll ----lllleeee ''''uuuusssseeee CCCCoooonnnnffffiiiigggg;;;; pppprrrriiiinnnntttt """"@@@@CCCCoooonnnnffffiiiigggg{{{{mmmmaaaannnn1111ddddiiiirrrr,,,,mmmmaaaannnn3333ddddiiiirrrr}}}}""""''''
-
- If the directories were _/_u_s_r_/_l_o_c_a_l_/_m_a_n_/_m_a_n_1 and
- _/_u_s_r_/_l_o_c_a_l_/_m_a_n_/_m_a_n_3, you would only need to add
- _/_u_s_r_/_l_o_c_a_l_/_m_a_n to your MANPATH. If they are different,
- you'll have to add both stems.
-
- If that doesn't work for some reason, you can still use
- the supplied _p_e_r_l_d_o_c script to view module information.
- You might also look into getting a replacement man
- program.
-
- If something strange has gone wrong with your program and
- you're not sure where you should look for help, try the ----wwww
- switch first. It will often point out exactly where the
- trouble is.
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- Perl is an interpreted language optimized for scanning
- arbitrary text files, extracting information from those
- text files, and printing reports based on that
- information. It's also a good language for many system
- management tasks. The language is intended to be
- practical (easy to use, efficient, complete) rather than
- beautiful (tiny, elegant, minimal). It combines (in the
- author's opinion, anyway) some of the best features of C,
- sssseeeedddd, aaaawwwwkkkk, and sssshhhh, so people familiar with those languages
- should have little difficulty with it. (Language
- historians will also note some vestiges of ccccsssshhhh, Pascal,
- and even BASIC-PLUS.) Expression syntax corresponds quite
- closely to C expression syntax. Unlike most Unix
- utilities, Perl does not arbitrarily limit the size of
- your data--if you've got the memory, Perl can slurp in
- your whole file as a single string. Recursion is of
- unlimited depth. And the hash tables used by associative
- arrays grow as necessary to prevent degraded performance.
- Perl uses sophisticated pattern matching techniques to
- scan large amounts of data very quickly. Although
- optimized for scanning text, Perl can also deal with
- binary data, and can make dbm files look like associative
- arrays. Setuid Perl scripts are safer than C programs
- through a dataflow tracing mechanism which prevents many
- stupid security holes. If you have a problem that would
- ordinarily use sssseeeedddd or aaaawwwwkkkk or sssshhhh, but it exceeds their
- capabilities or must run a little faster, and you don't
- want to write the silly thing in C, then Perl may be for
- you. There are also translators to turn your sssseeeedddd and aaaawwwwkkkk
- scripts into Perl scripts.
-
- But wait, there's more...
-
- Perl version 5 is nearly a complete rewrite, and provides
- the following additional benefits:
-
-
-
-
- 30/Jan/96 perl 5.002 with 2
-
-
-
-
-
- PERL(1) User Contributed Perl Documentation PERL(1)
-
-
- +o Many usability enhancements
- It is now possible to write much more readable Perl
- code (even within regular expressions). Formerly
- cryptic variable names can be replaced by mnemonic
- identifiers. Error messages are more informative,
- and the optional warnings will catch many of the
- mistakes a novice might make. This cannot be
- stressed enough. Whenever you get mysterious
- behavior, try the ----wwww switch!!! Whenever you don't
- get mysterious behavior, try using ----wwww anyway.
-
- +o Simplified grammar
- The new yacc grammar is one half the size of the old
- one. Many of the arbitrary grammar rules have been
- regularized. The number of reserved words has been
- cut by 2/3. Despite this, nearly all old Perl
- scripts will continue to work unchanged.
-
- +o Lexical scoping
- Perl variables may now be declared within a lexical
- scope, like "auto" variables in C. Not only is this
- more efficient, but it contributes to better privacy
- for "programming in the large".
-
- +o Arbitrarily nested data structures
- Any scalar value, including any array element, may
- now contain a reference to any other variable or
- subroutine. You can easily create anonymous
- variables and subroutines. Perl manages your
- reference counts for you.
-
- +o Modularity and reusability
- The Perl library is now defined in terms of modules
- which can be easily shared among various packages. A
- package may choose to import all or a portion of a
- module's published interface. Pragmas (that is,
- compiler directives) are defined and used by the same
- mechanism.
-
- +o Object-oriented programming
- A package can function as a class. Dynamic multiple
- inheritance and virtual methods are supported in a
- straightforward manner and with very little new
- syntax. Filehandles may now be treated as objects.
-
- +o Embeddable and Extensible
- Perl may now be embedded easily in your C or C++
- application, and can either call or be called by your
- routines through a documented interface. The XS
- preprocessor is provided to make it easy to glue your
- C or C++ routines into Perl. Dynamic loading of
- modules is supported.
-
-
-
-
-
- 30/Jan/96 perl 5.002 with 3
-
-
-
-
-
- PERL(1) User Contributed Perl Documentation PERL(1)
-
-
- +o POSIX compliant
- A major new module is the POSIX module, which
- provides access to all available POSIX routines and
- definitions, via object classes where appropriate.
-
- +o Package constructors and destructors
- The new BEGIN and END blocks provide means to capture
- control as a package is being compiled, and after the
- program exits. As a degenerate case they work just
- like awk's BEGIN and END when you use the ----pppp or ----nnnn
- switches.
-
- +o Multiple simultaneous DBM implementations
- A Perl program may now access DBM, NDBM, SDBM, GDBM,
- and Berkeley DB files from the same script
- simultaneously. In fact, the old dbmopen interface
- has been generalized to allow any variable to be tied
- to an object class which defines its access methods.
-
- +o Subroutine definitions may now be autoloaded
- In fact, the AUTOLOAD mechanism also allows you to
- define any arbitrary semantics for undefined
- subroutine calls. It's not just for autoloading.
-
- +o Regular expression enhancements
- You can now specify non-greedy quantifiers. You can
- now do grouping without creating a backreference.
- You can now write regular expressions with embedded
- whitespace and comments for readability. A
- consistent extensibility mechanism has been added
- that is upwardly compatible with all old regular
- expressions.
-
- Ok, that's _d_e_f_i_n_i_t_e_l_y enough hype.
-
- EEEENNNNVVVVIIIIRRRROOOONNNNMMMMEEEENNNNTTTT
- HOME Used if chdir has no argument.
-
- LOGDIR Used if chdir has no argument and HOME is not
- set.
-
- PATH Used in executing subprocesses, and in finding
- the script if ----SSSS is used.
-
- PERL5LIB A colon-separated list of directories in which
- to look for Perl library files before looking
- in the standard library and the current
- directory. If PERL5LIB is not defined,
- PERLLIB is used. When running taint checks
- (because the script was running setuid or
- setgid, or the ----TTTT switch was used), neither
- variable is used. The script should instead
- say
-
-
-
-
- 30/Jan/96 perl 5.002 with 4
-
-
-
-
-
- PERL(1) User Contributed Perl Documentation PERL(1)
-
-
- uuuusssseeee lllliiiibbbb """"////mmmmyyyy////ddddiiiirrrreeeeccccttttoooorrrryyyy"""";;;;
-
-
- PERL5DB The command used to get the debugger code. If
- unset, uses
-
- BBBBEEEEGGGGIIIINNNN {{{{ rrrreeeeqqqquuuuiiiirrrreeee ''''ppppeeeerrrrllll5555ddddbbbb....ppppllll'''' }}}}
-
-
- PERLLIB A colon-separated list of directories in which
- to look for Perl library files before looking
- in the standard library and the current
- directory. If PERL5LIB is defined, PERLLIB is
- not used.
-
- Apart from these, Perl uses no other environment
- variables, except to make them available to the script
- being executed, and to child processes. However, scripts
- running setuid would do well to execute the following
- lines before doing anything else, just to keep people
- honest:
-
- $$$$EEEENNNNVVVV{{{{''''PPPPAAAATTTTHHHH''''}}}} ==== ''''////bbbbiiiinnnn::::////uuuussssrrrr////bbbbiiiinnnn'''';;;; #### oooorrrr wwwwhhhhaaaatttteeeevvvveeeerrrr yyyyoooouuuu nnnneeeeeeeedddd
- $$$$EEEENNNNVVVV{{{{''''SSSSHHHHEEEELLLLLLLL''''}}}} ==== ''''////bbbbiiiinnnn////sssshhhh'''' iiiiffff ddddeeeeffffiiiinnnneeeedddd $$$$EEEENNNNVVVV{{{{''''SSSSHHHHEEEELLLLLLLL''''}}}};;;;
- $$$$EEEENNNNVVVV{{{{''''IIIIFFFFSSSS''''}}}} ==== '''''''' iiiiffff ddddeeeeffffiiiinnnneeeedddd $$$$EEEENNNNVVVV{{{{''''IIIIFFFFSSSS''''}}}};;;;
-
-
- AAAAUUUUTTTTHHHHOOOORRRR
- Larry Wall <<_l_w_a_l_l_@_s_e_m_s_._c_o_m>, with the help of oodles of
- other folks.
-
- FFFFIIIILLLLEEEESSSS
- """"////ttttmmmmpppp////ppppeeeerrrrllll----eeee$$$$$$$$"""" tttteeeemmmmppppoooorrrraaaarrrryyyy ffffiiiilllleeee ffffoooorrrr ----eeee ccccoooommmmmmmmaaaannnnddddssss
- """"@@@@IIIINNNNCCCC"""" llllooooccccaaaattttiiiioooonnnnssss ooooffff ppppeeeerrrrllll 5555 lllliiiibbbbrrrraaaarrrriiiieeeessss
-
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- aaaa2222pppp aaaawwwwkkkk ttttoooo ppppeeeerrrrllll ttttrrrraaaannnnssssllllaaaattttoooorrrr
-
- ssss2222pppp sssseeeedddd ttttoooo ppppeeeerrrrllll ttttrrrraaaannnnssssllllaaaattttoooorrrr
-
-
- DDDDIIIIAAAAGGGGNNNNOOOOSSSSTTTTIIIICCCCSSSS
- The ----wwww switch produces some lovely diagnostics.
-
- See the _p_e_r_l_d_i_a_g manpage for explanations of all Perl's
- diagnostics.
-
- Compilation errors will tell you the line number of the
- error, with an indication of the next token or token type
- that was to be examined. (In the case of a script passed
- to Perl via ----eeee switches, each ----eeee is counted as one line.)
-
- Setuid scripts have additional constraints that can
-
-
-
- 30/Jan/96 perl 5.002 with 5
-
-
-
-
-
- PERL(1) User Contributed Perl Documentation PERL(1)
-
-
- produce error messages such as "Insecure dependency". See
- the _p_e_r_l_s_e_c manpage.
-
- Did we mention that you should definitely consider using
- the ----wwww switch?
-
- BBBBUUUUGGGGSSSS
- The ----wwww switch is not mandatory.
-
- Perl is at the mercy of your machine's definitions of
- various operations such as type casting, _a_t_o_f_(_) and
- _s_p_r_i_n_t_f_(_). The latter can even trigger a coredump when
- passed ludicrous input values.
-
- If your stdio requires a seek or eof between reads and
- writes on a particular stream, so does Perl. (This
- doesn't apply to _s_y_s_r_e_a_d_(_) and _s_y_s_w_r_i_t_e_(_).)
-
- While none of the built-in data types have any arbitrary
- size limits (apart from memory size), there are still a
- few arbitrary limits: a given identifier may not be
- longer than 255 characters, and no component of your PATH
- may be longer than 255 if you use ----SSSS. A regular
- expression may not compile to more than 32767 bytes
- internally.
-
- See the perl bugs database at _h_t_t_p_:_/_/_p_e_r_l_._c_o_m_/_p_e_r_l_/_b_u_g_s_/.
- You may mail your bug reports (be sure to include full
- configuration information as output by the myconfig
- program in the perl source tree) to _p_e_r_l_b_u_g_@_p_e_r_l_._c_o_m. If
- you've succeeded in compiling perl, the perlbug script in
- the utils/ subdirectory can be used to help mail in a bug
- report.
-
- Perl actually stands for Pathologically Eclectic Rubbish
- Lister, but don't tell anyone I said that.
-
- NNNNOOOOTTTTEEEESSSS
- The Perl motto is "There's more than one way to do it."
- Divining how many more is left as an exercise to the
- reader.
-
- The three principal virtues of a programmer are Laziness,
- Impatience, and Hubris. See the Camel Book for why.
-
-
-
-
-
-
-
-
-
-
-
-
-
- 30/Jan/96 perl 5.002 with 6
-
-
-